package readCode;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;

public class LeitorC {
	
	private File arquivoSelecionado;
	
	private List<String> tokens;
	
	public LeitorC(File arquivo) throws FileNotFoundException {
		arquivoSelecionado = arquivo;
		tokens = new ArrayList<String>();
		generateTokens();
		separaNosTerminais();
	}
	
	public void generateTokens() throws FileNotFoundException{
		Scanner s = new Scanner(arquivoSelecionado);
		while (s.hasNext()) {
			tokens.add(s.next());
		}
	}
	
	public void separaNosTerminais(){
		
		for (int p = 0; p < tokens.size(); p++){
			String s = tokens.get(p);
			for (int i = 0; i < s.length(); i++){
				char c = s.charAt(i);
				if (c == ';' || c == '{' || c=='}'||c=='('||c==')' || c==','){			
					String delim = new String(new char[]{c});
					tokens.set(p, tokens.get(p).replace(delim, " "+c+" "));
				}
			}
		}
		for (int p = 0; p < tokens.size(); p++){
			String s = tokens.get(p);
			StringTokenizer st = new StringTokenizer(s, " ");
			if (st.countTokens() > 1){
				tokens.remove(p);
				int i = 0;
				while (st.hasMoreElements()){
					tokens.add(p+i,st.nextToken());
					i++;
				}
			}
		}
		for (int p = 0; p < tokens.size(); p++){
			String s = tokens.get(p);
			for (int i = 0; i < s.length(); i++){
				if (s.charAt(i) == ' ')
				tokens.set(p, tokens.get(p).replace(" ", ""));
			}
		}
	}
	
	public File getArquivoSelecionado() {
		return arquivoSelecionado;
	}

	public void setArquivoSelecionado(File arquivoSelecionado) {
		this.arquivoSelecionado = arquivoSelecionado;
	}

	public List<String> getStatements() {
		return tokens;
	}

	public void setStatements(List<String> statements) {
		this.tokens = statements;
	}
}
